The Varnish Book
参考
https://gyazo.com/6603b1b78f881e5b0df3ec09ce2339ec
デザイン原則
オブジェクトの格納方法
オブジェクト
HTTP レスポンスメッセージのローカルストア
Varnish のオブジェクトはハッシュキーでマッピングされ、メモリ上に格納される
ハッシュの制御が可能
複数のオブジェクトが同じハッシュキーを持つことができる
オブジェクトのライフタイム
https://gyazo.com/07d3824ddd2a725f1449afad7347c49d
t_origin
バックエンドでオブジェクトが作成された時間
オブジェクトは TTL + grace + keep が経過するまでキャッシュ内に存在
これを過ぎると Varnish デーモンによって削除される
Getting Started
install
code:shell
# yum install epel-release
# yum install varnish
設定ファイル
code:shell
# ls -lart /etc/varnish/
total 24
-rw-r--r--. 1 root root 1093 Aug 2 2017 varnish.params
-rw-r--r--. 1 root root 1220 Aug 2 2017 default.vcl
drwxr-xr-x. 78 root root 8192 May 18 03:09 ..
drwxr-xr-x. 2 root root 61 May 18 03:09 .
-rw-------. 1 root root 37 May 18 03:09 secretams
HTTP
キャッシュの無効化
Varnish は自動的に期限切れのオブジェクトを無効にする
無効化の仕組み
HTTP Purge
削除すべきものがわかっている場合にはこちらを利用する
restart はパージされたオブジェクトを直ちに更新するために使用できる
メモリを解放し、パージは Vary などの基づいたオブジェクトも削除してくれる
欠点
正規表現を利用できない
バックエンドがダウンしていようと可用性に関係なく、キャッシュからコンテンツを削除する
ソフトパージ
TTL を 0 に設定
バックエンドが利用できない場合、 Varnish がユーザに古いコンテンツを提供できるようにする
grace 値を維持している
非同期で自動的にバックエンドを取得し、オブジェクトを更新する
Banning
組み込み関数 ban(regex) を使用
Force Cache Misses
true で既存のオブジェクトを無視して、常にバックエンドから再フェッチする
副次的に複数のオブジェクトが作成される可能性がある
非常に大規模なキャッシュ無効化の必要性があるサイトの場合